package com.hue.simple;

import com.hue.utils.ConnectionUtils;
import com.rabbitmq.client.*;

import java.io.IOException;
import java.util.concurrent.TimeoutException;

/*
    简单模式的消费者
 */
public class Customer {
    public static void main(String[] args) throws IOException, TimeoutException {
        //2.获取连接
        Connection connection = ConnectionUtils.getConnection();

        //3.获取频道
        Channel channel = connection.createChannel();

        //4.声明队列
        /*
            参数含义:
                1.队列名
                2.是否定义持久化队列
                3.是否独占本地连接
                4.是否在不使用的时候自动删除队列
                5.其他参数
         */
        channel.queueDeclare(Product.QUEUE_NAME, true, false, false, null);

        //5.创建消费者来处理消息
        DefaultConsumer consumer = new DefaultConsumer(channel){
            @Override
            public void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties, byte[] body) throws IOException {
                System.out.println("路由key："+envelope.getRoutingKey());
                System.out.println("交换机："+envelope.getExchange());
                System.out.println("消息id："+envelope.getDeliveryTag());
                System.out.println("接收到的消息："+new String(body));
            }
        };

        //6.监听队列
        /*
            参数含义:
                1.队列名
                2.是否需要自动确认：为true时接收到消息后自动回复mq消息接收到了，mq将删除消息，否则需要手动确认
                3.监听的消费者
         */
        channel.basicConsume(Product.QUEUE_NAME, true,consumer);
    }
}
